namespace ext.grid
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>
	/// The default SelectionModel used by {@link Ext.grid.GridPanel}.
	/// It supports multiple selections and keyboard selection/navigation. The objects stored
	/// as selections and returned by {@link #getSelected}, and {@link #getSelections} are
	/// the {@link Ext.data.Record Record}s which provide the data for the selected rows.
	/// </summary>
	/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
	[ScriptName("RowSelectionModel")]
	[ScriptNamespace("Ext.grid")]
	[Imported()]
	public partial class RowSelectionModel : ext.grid.AbstractSelectionModel
	{
		
		#region Constructors
		/// <summary>Constructor</summary>
		/// <param name="config"></param>
		public RowSelectionModel(ext.grid.RowSelectionModel_Configuration config)
		{
		}
		
		/// <summary>Constructor</summary>
		public RowSelectionModel()
		{
		}
		#endregion
		
		#region Fields
		/// <summary>
		/// true to allow selection of only one row at a time (defaults to false
		/// allowing multiple selections)
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;true&lt;/tt&gt; to allow selection of only one row at a time (defaults to &lt;tt&gt;false&lt;/tt&gt;
		/// allowing multiple selections)
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("singleSelect")]
		public bool SingleSelect;
		
		/// <summary>Fires when the selection changes</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("selectionchangeEventName")]
		public const string SelectionchangeEventName = "selectionchange";
		
		/// <summary>Fires before a row is selected, return false to cancel the selection.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("beforerowselectEventName")]
		public const string BeforerowselectEventName = "beforerowselect";
		
		/// <summary>Fires when a row is selected.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("rowselectEventName")]
		public const string RowselectEventName = "rowselect";
		
		/// <summary>
		/// Fires when a row is deselected. To prevent deselection
		/// {@link Ext.grid.AbstractSelectionModel#lock lock the selections}.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("rowdeselectEventName")]
		public const string RowdeselectEventName = "rowdeselect";
		
		/// <summary>
		/// false to turn off moving the editor to the next row down when the enter key is pressed
		/// or the next row up when shift + enter keys are pressed.
		/// </summary>
		/// <htmlSummary>
		/// &lt;tt&gt;false&lt;/tt&gt; to turn off moving the editor to the next row down when the enter key is pressed
		/// or the next row up when shift + enter keys are pressed.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("moveEditorOnEnter")]
		public bool MoveEditorOnEnter;
		#endregion
		
		#region Methods
		/// <summary>Gets the number of selected rows.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("getCount")]
		public System.Number GetCount()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects the first row in the grid.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("selectFirstRow")]
		public void SelectFirstRow()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if there is a next record to select</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("hasNext")]
		public bool HasNext()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if there is a previous record to select</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("hasPrevious")]
		public bool HasPrevious()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the selected records</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <returns>Array of selected records</returns>
		[ScriptName("getSelections")]
		public System.Array GetSelections()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns the first selected record.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("getSelected")]
		public ext.data.RecordClass GetSelected()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Selects all rows if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("selectAll")]
		public void SelectAll()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if there is a selection.</summary>
		/// <htmlSummary>Returns &lt;tt&gt;true&lt;/tt&gt; if there is a selection.</htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("hasSelection")]
		public bool HasSelection()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if the specified record id is selected.</summary>
		/// <htmlSummary>Returns &lt;tt&gt;true&lt;/tt&gt; if the specified record id is selected.</htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="id">The id of record to check</param>
		[ScriptName("isIdSelected")]
		public bool IsIdSelected(string id)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Deselects a range of rows if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
		/// All rows in between startRow and endRow are also deselected.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="startRow">The index of the first row in the range</param>
		/// <param name="endRow">The index of the last row in the range</param>
		[ScriptName("deselectRange")]
		public void DeselectRange(System.Number startRow, System.Number endRow)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Select records.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="records">The records to select</param>
		/// <param name="keepExisting">&lt;tt&gt;true&lt;/tt&gt; to keep existing selections</param>
		[ScriptName("selectRecords")]
		public void SelectRecords(System.Array records, bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Select records.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="records">The records to select</param>
		[ScriptName("selectRecords")]
		public void SelectRecords(System.Array records)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Select the last row.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="keepExisting">&lt;tt&gt;true&lt;/tt&gt; to keep existing selections</param>
		[ScriptName("selectLastRow")]
		public void SelectLastRow(bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Select the last row.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("selectLastRow")]
		public void SelectLastRow()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects the row immediately following the last selected row.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="keepExisting">&lt;tt&gt;true&lt;/tt&gt; to keep existing selections</param>
		/// <returns>&lt;tt&gt;true&lt;/tt&gt; if there is a next row, else &lt;tt&gt;false&lt;/tt&gt;</returns>
		[ScriptName("selectNext")]
		public bool SelectNext(bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects the row immediately following the last selected row.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <returns>&lt;tt&gt;true&lt;/tt&gt; if there is a next row, else &lt;tt&gt;false&lt;/tt&gt;</returns>
		[ScriptName("selectNext")]
		public bool SelectNext()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects the row that precedes the last selected row.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="keepExisting">&lt;tt&gt;true&lt;/tt&gt; to keep existing selections</param>
		/// <returns>&lt;tt&gt;true&lt;/tt&gt; if there is a previous row, else &lt;tt&gt;false&lt;/tt&gt;</returns>
		[ScriptName("selectPrevious")]
		public bool SelectPrevious(bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects the row that precedes the last selected row.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <returns>&lt;tt&gt;true&lt;/tt&gt; if there is a previous row, else &lt;tt&gt;false&lt;/tt&gt;</returns>
		[ScriptName("selectPrevious")]
		public bool SelectPrevious()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Calls the passed function with each selection. If the function returns
		/// false, iteration is stopped and this function returns
		/// false. Otherwise it returns true.
		/// </summary>
		/// <htmlSummary>
		/// Calls the passed function with each selection. If the function returns
		/// &lt;tt&gt;false&lt;/tt&gt;, iteration is stopped and this function returns
		/// &lt;tt&gt;false&lt;/tt&gt;. Otherwise it returns &lt;tt&gt;true&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="fn">The function to call upon each iteration. It is passed the selected {@link Ext.data.Record Record}.</param>
		/// <param name="scope">The scope (<c>this</c> reference) in which the function is executed. Defaults to this RowSelectionModel.</param>
		/// <returns>true if all selections were iterated</returns>
		[ScriptName("each")]
		public bool Each(System.Delegate fn, object scope)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Calls the passed function with each selection. If the function returns
		/// false, iteration is stopped and this function returns
		/// false. Otherwise it returns true.
		/// </summary>
		/// <htmlSummary>
		/// Calls the passed function with each selection. If the function returns
		/// &lt;tt&gt;false&lt;/tt&gt;, iteration is stopped and this function returns
		/// &lt;tt&gt;false&lt;/tt&gt;. Otherwise it returns &lt;tt&gt;true&lt;/tt&gt;.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="fn">The function to call upon each iteration. It is passed the selected {@link Ext.data.Record Record}.</param>
		/// <returns>true if all selections were iterated</returns>
		[ScriptName("each")]
		public bool Each(System.Delegate fn)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Clears all selections if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="fast">
		/// &lt;tt&gt;true&lt;/tt&gt; to bypass the
		/// conditional checks and events described in {@link #deselectRow}.
		/// </param>
		[ScriptName("clearSelections")]
		public void ClearSelections(bool fast)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Clears all selections if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("clearSelections")]
		public void ClearSelections()
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if the specified row is selected.</summary>
		/// <htmlSummary>Returns &lt;tt&gt;true&lt;/tt&gt; if the specified row is selected.</htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="index">The record or index of the record to check</param>
		[ScriptName("isSelected")]
		public bool IsSelected(System.Number index)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Returns true if the specified row is selected.</summary>
		/// <htmlSummary>Returns &lt;tt&gt;true&lt;/tt&gt; if the specified row is selected.</htmlSummary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="index">The record or index of the record to check</param>
		[ScriptName("isSelected")]
		public bool IsSelected(ext.data.RecordClass index)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects multiple rows.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="rows">Array of the indexes of the row to select</param>
		/// <param name="keepExisting">
		/// &lt;tt&gt;true&lt;/tt&gt; to keep
		/// existing selections (defaults to &lt;tt&gt;false&lt;/tt&gt;)
		/// </param>
		[ScriptName("selectRows")]
		public void SelectRows(System.Array rows, bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>Selects multiple rows.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="rows">Array of the indexes of the row to select</param>
		[ScriptName("selectRows")]
		public void SelectRows(System.Array rows)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Selects a range of rows if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
		/// All rows in between startRow and endRow are also selected.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="startRow">The index of the first row in the range</param>
		/// <param name="endRow">The index of the last row in the range</param>
		/// <param name="keepExisting">True to retain existing selections</param>
		[ScriptName("selectRange")]
		public void SelectRange(System.Number startRow, System.Number endRow, bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Selects a range of rows if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is not locked}.
		/// All rows in between startRow and endRow are also selected.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="startRow">The index of the first row in the range</param>
		/// <param name="endRow">The index of the last row in the range</param>
		[ScriptName("selectRange")]
		public void SelectRange(System.Number startRow, System.Number endRow)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Selects a row. Before selecting a row, checks if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is locked} and fires the
		/// {@link #beforerowselect} event. If these checks are satisfied the row
		/// will be selected and followed up by firing the {@link #rowselect} and
		/// {@link #selectionchange} events.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="row">The index of the row to select</param>
		/// <param name="keepExisting">&lt;tt&gt;true&lt;/tt&gt; to keep existing selections</param>
		/// <param name="preventViewNotify">
		/// Specify &lt;tt&gt;true&lt;/tt&gt; to
		/// prevent notifying the view (disables updating the selected appearance)
		/// </param>
		[ScriptName("selectRow")]
		public void SelectRow(System.Number row, bool keepExisting, bool preventViewNotify)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Selects a row. Before selecting a row, checks if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is locked} and fires the
		/// {@link #beforerowselect} event. If these checks are satisfied the row
		/// will be selected and followed up by firing the {@link #rowselect} and
		/// {@link #selectionchange} events.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="row">The index of the row to select</param>
		/// <param name="keepExisting">&lt;tt&gt;true&lt;/tt&gt; to keep existing selections</param>
		[ScriptName("selectRow")]
		public void SelectRow(System.Number row, bool keepExisting)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Selects a row. Before selecting a row, checks if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is locked} and fires the
		/// {@link #beforerowselect} event. If these checks are satisfied the row
		/// will be selected and followed up by firing the {@link #rowselect} and
		/// {@link #selectionchange} events.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="row">The index of the row to select</param>
		[ScriptName("selectRow")]
		public void SelectRow(System.Number row)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Deselects a row. Before deselecting a row, checks if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is locked}.
		/// If this check is satisfied the row will be deselected and followed up by
		/// firing the {@link #rowdeselect} and {@link #selectionchange} events.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="row">The index of the row to deselect</param>
		/// <param name="preventViewNotify">
		/// Specify &lt;tt&gt;true&lt;/tt&gt; to
		/// prevent notifying the view (disables updating the selected appearance)
		/// </param>
		[ScriptName("deselectRow")]
		public void DeselectRow(System.Number row, bool preventViewNotify)
		{
			throw new System.Exception("Imported - not implemented");
		}
		
		/// <summary>
		/// Deselects a row. Before deselecting a row, checks if the selection model
		/// {@link Ext.grid.AbstractSelectionModel#isLocked is locked}.
		/// If this check is satisfied the row will be deselected and followed up by
		/// firing the {@link #rowdeselect} and {@link #selectionchange} events.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		/// <param name="row">The index of the row to deselect</param>
		[ScriptName("deselectRow")]
		public void DeselectRow(System.Number row)
		{
			throw new System.Exception("Imported - not implemented");
		}
		#endregion
		
		#region Events
		/// <summary>Fires when the selection changes</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("selectionchange")]
		public event ext.auto.Delegate_ext_grid_RowSelectionModel Selectionchange;
		
		/// <summary>Fires before a row is selected, return false to cancel the selection.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("beforerowselect")]
		public event ext.auto.Delegate_ext_grid_RowSelectionModel_And_System_Number_And_System_Boolean_And_ext_data_RecordClass Beforerowselect;
		
		/// <summary>Fires when a row is selected.</summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("rowselect")]
		public event ext.auto.Delegate_ext_grid_RowSelectionModel_And_System_Number_And_ext_data_RecordClass Rowselect;
		
		/// <summary>
		/// Fires when a row is deselected. To prevent deselection
		/// {@link Ext.grid.AbstractSelectionModel#lock lock the selections}.
		/// </summary>
		/// <definedin>src\widgets\grid\RowSelectionModel.js</definedin>
		[ScriptName("rowdeselect")]
		public event ext.auto.Delegate_ext_grid_RowSelectionModel_And_System_Number_And_ext_data_RecordClass Rowdeselect;
		#endregion
	}
}
